package cc.lj.internal.payment.domain.pay.service.impl;

import cc.lj.internal.core.model.PageBean;
import cc.lj.internal.core.model.PageParam;
import cc.lj.internal.payment.domain.pay.repository.IPayFormListRepository;
import cc.lj.internal.payment.domain.pay.repository.IProductConumeRepository;
import cc.lj.internal.payment.domain.pay.service.IProductConumeDomainService;
import cc.lj.internal.payment.domain.pay.vo.ProductConumeDO;
import cc.lj.internal.payment.domain.pay.vo.TicketPayRecordDO;
import cc.lj.internal.payment.domain.pay.vo.convert.ProductConumePOConvertDO;
import cc.lj.internal.payment.domain.pay.vo.convert.TicketPayRecordPOConvertDO;
import cc.lj.internal.payment.infrastructure.po.ProductConumePO;
import cc.lj.internal.payment.infrastructure.po.TicketPayRecordPO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;
import java.util.stream.Collectors;

/**
 * @author liangxifeng
 * @date 2022/10/24 15:02
 */
@Service("productConumeDomainServiceImpl")
@Slf4j
public class ProductConumeDomainServiceImpl implements IProductConumeDomainService {
    @Resource(name = "productConumeRepository")
    private IProductConumeRepository repository;

    @Override
    public Integer insert(ProductConumeDO productConumeDO) {
        return repository.insert(ProductConumePOConvertDO.INSTANCE.convert(productConumeDO));
    }

    @Override
    public ProductConumeDO getById(Integer id) {
        return ProductConumePOConvertDO.INSTANCE.convert( repository.getById(id) );
    }

    @Override
    public PageBean<ProductConumeDO> selectPage(PageParam<ProductConumeDO> pageParam) {
        PageParam<ProductConumePO> pageParam1 = pageConvert(pageParam);
        return null;
    }

    @Override
    public Integer updateById(ProductConumeDO productConumeDO) {
        return repository.updateById(ProductConumePOConvertDO.INSTANCE.convert(productConumeDO));
    }

    @Override
    public List<ProductConumeDO> getList(ProductConumeDO productConumeDO) {
        return repository.getList(ProductConumePOConvertDO.INSTANCE.convert(productConumeDO))
                .stream()
                .map( x-> ProductConumePOConvertDO.INSTANCE.convert(x))
                .collect(Collectors.toList());
    }
    /**
     * 分页DO to PO
     * @param pageParam
     * @return
     */
    public PageParam<ProductConumePO> pageConvert(PageParam<ProductConumeDO> pageParam) {
        PageParam<ProductConumePO> pageParamR = new PageParam<ProductConumePO>();
        pageParamR.setPageNum( pageParam.getPageNum() ) ;
        pageParamR.setPageSize( pageParam.getPageSize() );
        pageParamR.setOrderBy( pageParam.getOrderBy() );
        ProductConumePO activityPO = ProductConumePOConvertDO.INSTANCE.convert(pageParam.getParam());
        pageParamR.setParam(activityPO);
        return pageParamR;
    }
}
